As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
Information handling systems and methods for controlling data transfer to and from a redundant array of independent disks (RAID) memory storage system are known in the art. A RAID system is a data storage system in which data is distributed across a group of physical disks (PDs) in the form of hard disk drive or solid state drive storage devices functioning as a storage unit. A RAID system employs a RAID controller that manages the storage of data on the multiple PDs of the RAID storage system. Often, information stored on each PD is duplicated on other disks in the array, creating redundancy to ensure no information is lost if disk failure occurs. Also, commonly, parity is calculated across a set of information stored on PDs of the array. RAID systems achieve redundancy in two methods—mirroring and parity. Both mechanisms allow for regeneration of data in the event of disk failure or unreadable disks. The I/O operations on a PD is accessed at the granularity of the size of a logical block and the logical blocks are addressed by logical block address.
Existing conventional RAID system configuration interfaces require a RAID system user to specify the identity and number of PDs to create a required RAID configuration. Replicating a given RAID configuration between RAID systems having very similar or identical PD disk sets is relatively easy. However, it is a complex task to replicate a given RAID configuration between RAID systems having varying size, types, and/or number of PDs.
For example, consider the creation of different RAID level virtual disks (VDs) with different size requirements on a RAID system having two 50 GB PDs and one 100 GB PD. For example, given a requirement to create a RAID 0 VD of size 100 GB (RAID 0 requires minimum of one PD), and a simultaneous requirement to create a RAID 1 VD of size 50 GB (RAID 1 requires minimum of two PDs). In such a case, if the user creates the RAID 0 VD using two 50 GB PDs to achieve 100 GB, then the user cannot create the RAID 1 VD, since there are not enough PDs remaining. As another example, consider the creation of different RAID level VDs with a hot spare on a RAID system having two 50 GB PDs, one 100 GB and one 25 GB PD. For example, given a requirement to create a RAID 0 VD of size 100 GB (RAID 0 requires minimum of one PD), and a simultaneous requirement to create a RAID 1 VD of size 25 GB with a hot spare assigned (RAID 1 requires minimum of two PDs and one PD for hot spare). In such a case if the user selects two 50 GB PDs to create the RAID 0 VD, then the user cannot create the RAID 1 VD since there is not enough PDs remaining. These problems get more complex as the number of disks and combination of RAID levels increase. Also, it is further complicated where a user is allowed to replicate a configuration while keeping the existing configuration.